package site.wtcc.originalfavor.func.utils;

/**
 * 请求id工具
 *
 * @author hexiaodou
 * @date 2022/09/15 10:13:08
 */
public final class RequestIdUtils {
    private static final ThreadLocal<Long> LONG_THREAD_LOCAL = new ThreadLocal<>();

    /**
     * 实用程序类（工具类）是静态成员的集合，不需要实例化。即使是可以扩展的抽象实用程序类也不应该有公共构造函数。
     *
     * Java向每个没有显式定义至少一个类的类添加隐式公共构造函数。因此，至少应该定义一个非公共构造函数。
     */
    private RequestIdUtils() {
        throw new IllegalStateException("Utility class");
    }

    public static void set(Long requestId) {
        LONG_THREAD_LOCAL.set(requestId);
    }

    public static Long get() {
        return LONG_THREAD_LOCAL.get();
    }

    public static void remove() {
        LONG_THREAD_LOCAL.remove();
    }
}
